Hardware-based accelerator for time-domain scientific computing

ABSTRACT

Disclosed herein are components and/or methods that facilitate implementation of a practical FDTD hardware accelerator. The components and/or methods increase speed, reduce memory requirements, and/or simplify a FDTD hardware implementation. This is accomplished by providing one, some, or all of the following: a reformulated FDTD method to simplify the hardware implementation; a memory look-up table (MLUT) to decrease memory requirements; customized, floating-point arithmetic units optimized for speed to decrease execution time; a memory switching unit (MSU) that coordinates multiple memory reads and writes from/to multiple random access memories (RAMs) to simplify control; a data dependence unit (DDU) that determines all dependencies associated with a given calculation to simplify control; and/or a control unit based on a global counter to simplify control.

CLAIM FOR PRIORITY

[0001] The present application claims priority of U.S. Provisional Patent Application Serial No. 60/333,810, filed Nov. 19, 2001, the disclosure of which being incorporated by reference herein in its entirety.

BACKGROUND OF THE INVENTION

[0002] A. Field of the Invention

[0003] The present invention relates generally to hardware accelerators, and, more particularly to components and methods for facilitating implementation of a finite-difference time-domain (FDTD) hardware accelerator.

[0004] B. Description of the Related Art

[0005] No longer relegated to radio-frequency (RF) engineers, antenna designers, and military applications, electromagnetic analysis has become a key factor in many areas of advanced technology. From personal computers (PCs) with processor speeds approaching three (3) gigahertz (GHz) and wireless computer networks, to personal digital assistants (PDAs) with Internet capabilities and the seemingly ubiquitous cell phone, it seems that almost every electronic design now requires electromagnetic characterization. To facilitate this analysis, numerical techniques have been developed that allow computers to easily solve Maxwell's equations.

[0006] Maxwell's equations are a system of coupled, differential equations:

∇·D=q _(ev)

∇·B=q _(mv) $\begin{matrix} {{\nabla{\times H}} = \quad {J_{i} + {\sigma \quad E} + \frac{\partial D}{\partial t}}} \\ {{\nabla{\times E}} = \quad {M_{i} - {\frac{\partial B}{\partial t}.}}} \end{matrix}$

[0007] As such, they can be represented in difference form, thus allowing their numerical solution. To see this, recall that the definition of the derivative is: ${f^{\prime}(x)} = {\lim\limits_{{\Delta \quad x}\rightarrow 0}{\frac{{f\left( {x + {\Delta \quad x}} \right)} - {f(x)}}{\Delta \quad x}.}}$

[0008] Implementing both temporal and spatial derivatives of Maxwell's equations in difference form produces the numerical technique known as the finite-difference time-domain (FDTD) method. In this approach, a region of interest is sampled to generate a grid of points, hereinafter referred to as a “mesh.” The discretized forms of Maxwell's equations are then solved at each point in the mesh to determine the associated electromagnetic fields.

[0009] Although FDTD methods are accurate and well defined, current computer-system technology limits the speed at which these operations can be performed. Run times on the order of hours, weeks, months, or longer are common when solving problems of realistic size. Some problems are even too large to be effectively solved due to practical time and memory constraints. The slow nature of the algorithm primarily results from the nested for-loops that are required to iterate over the three spatial dimensions and time.

[0010] To shorten the computational time, people acquire faster computers, lease time on supercomputers, or build clusters of computers to gain a parallel processing speedup. These solutions can be prohibitively expensive and frequently impractical. As a result, there is a need in the art to increase the speed of the FDTD method in a relatively inexpensive and practical way. To this end, people have suggested that an FDTD accelerator, i.e., special-purpose hardware that implements the FDTD method, be used to speed up the computations. (See, e.g., J. R. Marek, An Investigation of a Design for a Finite-Difference Time Domain (FDTD) Hardware Accelerator, Air Force Inst. of Tech., Wright-Patterson A F B, M. S. Thesis (1991); J. R. Marek et al., A Dedicated VLSI Architecture for Finite-Difference Time Domain Calculations, presented at The 8th Annual Review of Progress in Applied Computational Electromagnetics, Naval Postgraduate School (Monterey, Calif. 1992); R. N. Schneider et al., Application of FPGA Technology to Accelerate the Finite-Difference Time-Domain (FDTD) Method, presented at The 10th ACM Int'l Symposium on Field-Programmable Gate Arrays, (Monterey, Calif. 2002); and P. Placidi et al., A Custom VLSI Architecture for the Solution of FOTO Equations, IEJCE Trans. Electron., vol. E85-C, No. 3, pp. 572-577 (March 2002)). Although limited success in developing hardware-based FDTD solvers has been shown, the related art still needs a practical, hardware-based solver. There are several reasons for this.

[0011] First, the conventional FDTD algorithm contains several distinct regions that require different mathematical expressions. These include the normal FDTD space, the absorbing boundary region, and the incident source condition. For software implementations, these regions are relatively simple to incorporate into a solver. Unfortunately, hardware designs are most efficient when they are asked to perform only one task. Incorporating functionality within a hardware accelerator to detect special regions and handle them differently increases hardware logic and slows the overall hardware design.

[0012] Second, a hardware-based FDTD solver puts great demands on the underlying memory architecture. Every node in the mesh requires storage of at least three electric fields and at least three magnetic fields, with each field being thirty-two (32) or sixty-four (64) bits. Also, every node has associated material parameters, including three permittivities, three permeabilities, and three conductivities. Again, these are likely to be thirty-two (32)- or sixty-four (64)-bit numbers. For a ten (10) million-node mesh, this requires several gigabytes of memory. Storage of the fields, however, is not the only memory concern. Just as important is the time to retrieve or fetch data from memory and to write updated results back to memory. This latency presents serious problems to practical hardware implementations.

[0013] Third, floating-point operations are desirable to maximize precision and to minimize numerical dispersion. However, floating-point operations tend to be slow and require specialized hardware.

[0014] Finally, hardware system control can be a daunting task. Millions of field components are constantly being retrieved or fetched from memory and updated field values are continuously being written back. For maximum throughput, it is desired to have a finely-tuned system in which all components are working together quickly and efficiently. However, the hardware control architecture necessary to oversee this can be very complex.

[0015] Thus, there is a need in the art to overcome these limitations, and to provide for practical hardware-based FDTD solvers.

SUMMARY OF THE INVENTION

[0016] The present invention solves the problems of the related art by providing components and/or methods that facilitate implementation of a practical FDTD hardware accelerator. The components and/or methods of the present invention increase speed, reduce memory requirements, and/or simplify a FDTD hardware implementation.

[0017] The present invention accomplishes this in numerous ways. First, the present invention may utilize a reformulated FDTD method to simplify the hardware implementation. Second, the present invention may include a memory look-up table (MLUT) to decrease memory requirements. Third, the present invention may use customized, floating-point arithmetic units optimized for speed to decrease execution time. Fourth, the present invention may utilize a memory switching unit (MSU) that coordinates multiple memory reads and writes from/to multiple random access memories (RAMs) to simplify control. Fifth, the present invention may include a data dependence unit (DDU) that determines all dependencies associated with a given calculation to simplify control. Finally, the present invention may use a control unit based on a global counter to simplify control.

[0018] Further scope of applicability of the present invention will become apparent from the detailed description given hereinafter. However, it should be understood that the detailed description and specific examples, while indicating preferred embodiments of the invention, are given by way of illustration only, since various changes and modifications within the spirit and scope of the invention will become apparent to those skilled in the art from this detailed description. It is to be understood that both the foregoing general description and the following detailed description are exemplary and explanatory only and are not restrictive of the invention, as claimed.

DETAILED DESCRIPTION OF THE EMBODIMENTS OF THE INVENTION

[0019] The following detailed description does not limit the invention. Instead, the scope of the invention is defined by the appended claims and equivalents thereof. When constructing the FDTD hardware accelerator, the present invention may utilize some of the components and/or methods that facilitate implementation of the FDTD hardware accelerator, as described more fully below. Preferably, however, the present invention will utilize all of the components and/or methods described below when constructing the FDTD hardware accelerator. Each component and/or method that facilitates implementation of the FDTD hardware accelerator will be described separately below.

[0020] A. Reformulated FDTD Algorithm

[0021] The conventional FDTD algorithm contains several distinct regions that require different mathematical expressions. These include the normal FDTD space, the absorbing boundary region, and the incident source condition. In one aspect, the present invention may use an alternative approach to the conventional FDTD algorithm by imbedding all three regions into a single set of mathematical expressions. These twelve (12) expressions implicitly contain the normal FDTD region, perfectly matched layer (PML) absorbing boundaries, and the incident source through a connecting boundary condition. (See, e.g., J. P. Berenger, A Perfectly Matched Layer for the Absorption of Electromagnetic Waves, J. of Computational Physics, vol. 114, pp. 94-103 (1994)).

[0022] Because the set of equations must contain the PML regions, the fields are implemented in a split-field formulation. Here, any field component can be expressed as the sum of two split-field components, such as:

[0023] E_(x)=E_(xy)+E_(xz)

[0024] E_(y)=E_(yx)+E_(yz)

[0025] E_(z)=E_(zx)+E_(zy)

[0026] H_(x)=H_(xy)+H_(xz)

[0027] H_(y)=H_(yx)+H_(yz)

[0028] H_(z)=H_(zx)+H_(zy)

[0029] The reformulated FDTD equations become: $\begin{matrix} {{E_{xy}|_{i,j,k}^{n + 1}} = \quad {{{A_{2}\left( m_{y} \right)}E_{xy}}|_{i,j,k}^{n}{{+ {B_{2}\left( m_{y} \right)}}\left( H_{zx}|_{i,j,k}^{n + {1/2}}{- H_{zx}}|_{i,j,{- 1},k}^{n + {1/2}}{+ H_{zy}}|_{i,j,k}^{n + {1/2}}{- H_{zy}}|_{i,{j - 1},k}^{n + {1/2}}{+ \delta_{xy}^{E}} \middle| {}_{i,j,k}H_{z}^{inc}|_{i,j,k}^{n + {1/2}} \right)}}} \\ {{E_{xz}|_{i,j,k}^{n + 1}} = \quad {{{A_{3}\left( m_{z} \right)}E_{xz}}|_{i,j,k}^{n}{{- {B_{3}\left( m_{z} \right)}}\left( H_{yx}|_{i,j,k}^{n + {1/2}}{- H_{yx}}|_{i,j,k,{- 1}}^{n + {1/2}}{+ H_{yz}}|_{i,j,k}^{n + {1/2}}{- H_{yz}}|_{i,j,{k - 1}}^{n + {1/2}}{+ \delta_{xz}^{E}} \middle| {}_{i,j,k}H_{z}^{inc}|_{i,j,k}^{n + {1/2}} \right)}}} \\ {{E_{yx}|_{i,j,k}^{n + 1}} = \quad {{{A_{1}\left( m_{x} \right)}E_{yx}}|_{i,j,k}^{n}{{- {B_{1}\left( m_{x} \right)}}\left( H_{zx}|_{i,j,k}^{n + {1/2}}{- H_{zx}}|_{{i - 1},j,k}^{n + {1/2}}{+ H_{zy}}|_{i,j,k}^{n + {1/2}}{- H_{zy}}|_{{i - 1},j,k}^{n + {1/2}}{+ \delta_{yz}^{E}} \middle| {}_{i,j,k}H_{z}^{inc}|_{i,j,k}^{n + {1/2}} \right)}}} \\ {{E_{yz}|_{i,j,k}^{n + 1}} = \quad {{{A_{3}\left( m_{z} \right)}E_{yz}}|_{i,j,k}^{n}{{+ {B_{3}\left( m_{z} \right)}}\left( H_{xy}|_{i,j,k}^{n + {1/2}}{- H_{xy}}|_{i,j,{k - 1}}^{n + {1/2}}{+ H_{xz}}|_{i,j,k}^{n + {1/2}}{- H_{xz}}|_{i,j,{k - 1}}^{n + {1/2}}{+ \delta_{yz}^{E}} \middle| {}_{i,j,k}H_{x}^{inc}|_{i,j,k}^{n + {1/2}} \right)}}} \\ {{E_{zx}|_{i,j,k}^{n + 1}} = \quad {{{A_{1}\left( m_{x} \right)}E_{zx}}|_{i,j,k}^{n}{{+ {B_{1}\left( m_{x} \right)}}\left( H_{yx}|_{i,j,k}^{n + {1/2}}{- H_{yx}}|_{{i - 1},j,k}^{n + {1/2}}{+ H_{yz}}|_{i,j,k}^{n + {1/2}}{- H_{yz}}|_{{i - 1},j,k}^{n + {1/2}}{+ \delta_{zx}^{E}} \middle| {}_{i,j,k}H_{y}^{inc}|_{i,j,k}^{n + {1/2}} \right)}}} \\ {{E_{zy}|_{i,j,k}^{n + 1}} = \quad {{{A_{2}\left( m_{y} \right)}E_{zy}}|_{i,j,k}^{n}{{- {B_{2}\left( m_{y} \right)}}\left( H_{xy}|_{i,j,k}^{n + {1/2}}{- H_{xy}}|_{i,{j - 1},k}^{n + {1/2}}{+ H_{xz}}|_{i,j,k}^{n + {1/2}}{- H_{xz}}|_{i,{j - 1},k}^{n + {1/2}}{+ \delta_{zy}^{E}} \middle| {}_{i,j,k}H_{x}^{inc}|_{i,j,k}^{n + {1/2}} \right)}}} \\ {{H_{xy}|_{i,j,k}^{n + {1/2}}} = \quad {{{A_{5}\left( m_{y} \right)}H_{xy}}|_{i,j,k}^{n - {1/2}}{{- {B_{5}\left( m_{y} \right)}}\left( E_{zx}|_{i,{j + 1},k}^{n}{- E_{zx}}|_{i,j,k}^{n}{+ E_{zy}}|_{i,{j + 1},k}^{n}{- E_{zy}}|_{i,j,k}^{n}{+ \delta_{xy}^{H}} \middle| {}_{i,j,k}E_{z}^{inc}|_{i,j,k}^{n} \right)}}} \\ {{H_{xz}|_{i,j,k}^{n + {1/2}}} = \quad {{{A_{6}\left( m_{z} \right)}H_{xz}}|_{i,j,k}^{n - {1/2}}{{+ {B_{6}\left( m_{z} \right)}}\left( E_{yx}|_{i,j,{k + 1}}^{n}{- E_{yx}}|_{i,j,k}^{n}{+ E_{yz}}|_{i,j,{k + 1}}^{n}{- E_{yz}}|_{i,j,k}^{n}{+ \delta_{xz}^{H}} \middle| {}_{i,j,k}E_{y}^{inc}|_{i,j,k}^{n} \right)}}} \\ {{H_{yz}|_{i,j,k}^{n + {1/2}}} = \quad {{{A_{6}\left( m_{z} \right)}H_{yz}}|_{i,j,k}^{n - {1/2}}{{- {B_{6}\left( m_{z} \right)}}\left( E_{xy}|_{i,j,{k + 1}}^{n}{- E_{xy}}|_{i,j,k}^{n}{+ E_{xz}}|_{i,j,{k + 1}}^{n}{- E_{xz}}|_{i,j,k}^{n}{+ \delta_{xz}^{H}} \middle| {}_{i,j,k}E_{x}^{inc}|_{i,j,k}^{n} \right)}}} \\ {{H_{yx}|_{i,j,k}^{n + {1/2}}} = \quad {{{A_{4}\left( m_{x} \right)}H_{yx}}|_{i,j,k}^{n - {1/2}}{{+ {B_{4}\left( m_{x} \right)}}\left( E_{zx}|_{{i + 1},j,k}^{n}{- E_{zx}}|_{i,j,k}^{n}{+ E_{zy}}|_{{i + 1},j,k}^{n}{- E_{zy}}|_{i,j,k}^{n}{+ \delta_{yx}^{H}} \middle| {}_{i,j,k}E_{z}^{inc}|_{i,j,k}^{n} \right)}}} \\ {{H_{zx}|_{i,j,k}^{n + {1/2}}} = \quad {{{A_{4}\left( m_{x} \right)}H_{zx}}|_{i,j,k}^{n - {1/2}}{{- {B_{4}\left( m_{x} \right)}}\left( E_{yx}|_{{i + 1},j,k}^{n}{- E_{yx}}|_{i,j,k}^{n}{+ E_{yz}}|_{{i + 1},j,k}^{n}{- E_{yz}}|_{i,j,k}^{n}{+ \delta_{zx}^{H}} \middle| {}_{i,j,k}E_{y}^{inc}|_{i,j,k}^{n} \right)}}} \\ {{H_{zy}|_{i,j,k}^{n + {1/2}}} = \quad {{{A_{5}\left( m_{y} \right)}H_{zy}}|_{i,j,k}^{n - {1/2}}{{+ {B_{5}\left( m_{y} \right)}}\left( E_{xy}|_{i,j,{+ 1},k}^{n}{- E_{xy}}|_{i,j,k}^{n}{+ E_{xz}}|_{i,j,{+ 1},k}^{n}{- E_{xz}}|_{i,j,k}^{n}{+ \delta_{zy}^{H}} \middle| {}_{i,j,k}E_{x}^{inc}|_{i,j,k}^{n} \right)}}} \end{matrix}$

[0030] and the coefficients are: ${A_{1} = \left\lbrack \frac{1 - \frac{{\sigma_{x}\left( m_{x} \right)}\Delta \quad t}{2{ɛ_{x}\left( m_{x} \right)}}}{1 + \frac{{\sigma_{x}\left( m_{x} \right)}\Delta \quad t}{2{ɛ_{x}\left( m_{x} \right)}}} \right\rbrack},{A_{2} = \left\lbrack \frac{1 - \frac{{\sigma_{y}\left( m_{y} \right)}\Delta \quad t}{2{ɛ_{y}\left( m_{y} \right)}}}{1 + \frac{{\sigma_{y}\left( m_{y} \right)}\Delta \quad t}{2{ɛ_{y}\left( m_{y} \right)}}} \right\rbrack},{A_{3} = \left\lbrack \frac{1 - \frac{{\sigma_{z}\left( m_{z} \right)}\Delta \quad t}{2{ɛ_{z}\left( m_{z} \right)}}}{1 + \frac{{\sigma_{z}\left( m_{z} \right)}\Delta \quad t}{2{ɛ_{z}\left( m_{z} \right)}}} \right\rbrack}$ ${A_{4} = \left\lbrack \frac{1 - \frac{{\sigma_{x}^{*}\left( m_{x} \right)}\Delta \quad t}{2\mu_{o}}}{1 + \frac{\sigma_{x}^{*}\left( {m_{x)}\Delta \quad t} \right.}{2\mu_{o}}} \right\rbrack},{A_{5} = \left\lbrack \frac{1 - \frac{{\sigma_{y}^{*}\left( m_{y} \right)}\Delta \quad t}{2\mu_{o}}}{1 + \frac{{\sigma_{y}^{*}\left( m_{y} \right)}\Delta \quad t}{2\mu_{o}}} \right\rbrack},{A_{6} = \left\lbrack \frac{1 - \frac{{\sigma_{z}^{*}\left( m_{z} \right)}\Delta \quad t}{2\mu_{o}}}{1 + \frac{{\sigma_{z}^{*}\left( m_{z} \right)}\Delta \quad t}{2\mu_{o}}} \right\rbrack}$ ${B_{1} = \left\lbrack \frac{\frac{\Delta \quad t}{{ɛ_{x}\left( m_{x} \right)}\Delta \quad x}}{1 + \frac{{\sigma_{x}\left( m_{x} \right)}\Delta \quad t}{2{ɛ_{x}\left( m_{x} \right)}}} \right\rbrack},{B_{2} = \left\lbrack \frac{\frac{\Delta \quad t}{{ɛ_{y}\left( m_{y} \right)}\Delta \quad y}}{1 + \frac{{\sigma_{y}\left( m_{y} \right)}\Delta \quad t}{2{ɛ_{y}\left( m_{y} \right)}}} \right\rbrack},{B_{3} = \left\lbrack \frac{\frac{\Delta \quad t}{{ɛ_{z}\left( m_{z} \right)}\Delta \quad z}}{1 + \frac{{\sigma_{z}\left( m_{z} \right)}\Delta \quad t}{2{ɛ_{z}\left( m_{z} \right)}}} \right\rbrack}$ ${B_{4} = \left\lbrack \frac{\frac{\Delta \quad t}{\mu_{o}\Delta \quad x}}{1 + \frac{{\sigma_{x}^{*}\left( m_{x} \right)}\Delta \quad t}{2\mu_{o}}} \right\rbrack},{B_{5} = \left\lbrack \frac{\frac{\Delta \quad t}{\mu_{o}\Delta \quad y}}{1 + \frac{{\sigma_{y}^{*}\left( m_{y} \right)}\Delta \quad t}{2\mu_{o}}} \right\rbrack},{B_{6} = {\left\lbrack \frac{\frac{\Delta \quad t}{\mu_{o}\Delta \quad z}}{1 + \frac{{\sigma_{z}^{*}\left( m_{z} \right)}\Delta \quad t}{2\mu_{o}}} \right\rbrack.}}$

[0031] Where, E is the electric field; H is the magnetic field; i, j, and k are the x, y, and z coordinates, respectively, of the node currently being updated; m is the material type (a bit vector representing the material type in the x, y, or z direction) of the node currently being updated; A and B are arbitrary names for coefficients that weight the fields in the above computations, and δ is −1, 0, or 1 (used to turn on or turn off the incident fields).

[0032] Hence, Maxwell's equations are split into twelve equations that can be discretized using the standard Yee algorithm. (See, e.g., K. S. Yee, Numerical Solution of Initial Boundary Value Problems Involving Maxwell's Equations in Isotropic Media, IEEE Transactions on Antennas and Propagation, vol. 14, pp. 302-307 (1966)).

[0033] B. Material Look-Up Table (MLUT)

[0034] There are nine values associated with any given node that represent the material properties of that node. When implementing PML absorbing boundaries, even more values are necessary, namely, the magnetic conductivity in the x, y, and z directions.

[0035] However, the coefficients, A₁-A₆ and B₁-B₆, are constant for a given material. Hence, in another aspect, rather than store all the material properties at every node, the present invention proposes storing only a small bit vector representing the material type of the node. Then, the values of coefficients A₁-A₆ and B₁-B₆ can be looked up from a material look-up table (MLUT) based on this material type. In addition to saving memory, the MLUT also saves computations. Without the MLUT, all material parameters would have to be stored, and then the coefficients A₁-A₆ and B₁-B₆ computed. With the MLUT, the present invention enables storage of a few bits to denote the material type and looks up the corresponding coefficients in the table with no need to compute the coefficients. Storage of the entire problem's material structure requires only storage of three small integers (representing the material types in the x, y and z directions) at each node, thus saving memory and computational requirements.

[0036] C. Customized Floating-Point Arithmetic Units

[0037] In order to optimize the solution of the FDTD equations, the present invention, in still another aspect, may implement customized, IEEE 754 standard-based (compliant) floating-point arithmetic units. These adders and multipliers may be based on the IEEE 754 standard, but preferably are not fully compliant with the standard. If speed is to be one of the most important design features, the present invention proposes removing features that would otherwise slow the arithmetic units down. As an example of one feature that may be removed, the arithmetic units of the present invention would not support denormalized numbers. Rather, any number that would normally be denormalized is simply rounded to zero. As another example of a feature that may be removed, the arithmetic units of the present invention would not support all four rounding methods outlined in the IEEE 754 standard. Instead, the arithmetic units of the present invention would only support “round to zero” method. These exemplary optimizations allow the arithmetic units of the present invention to run faster than fully compliant arithmetic units. However, other optimizations may be possible within the scope of the present invention.

[0038] D. Memory Switching Unit

[0039] An efficient hardware-based implementation utilizes multiple memory banks to allow parallel access to data, thereby keeping the computational pipelines full, and maximizing throughput. Multiple, independent banks of RAM require multiple RAM controllers, with each controller requiring its own unique address, control, and data lines. Furthermore, requests to fetch data or write updated values back to memory can come from several locations. This presents a control nightmare.

[0040] To overcome this, the present invention, in still another aspect, may utilize a specific memory switching unit responsible for handling all memory input/output (I/O) requests. This memory switching unit would organize which values need to be fetched, determine the appropriate RAM to fetch them from, and handle all control signaling that must take place. In this manner, the memory switching unit of present invention becomes a single “smart” unit. This simplifies control and provides the computational units transparent access to an array of RAM modules.

[0041] E. Data Dependence Unit

[0042] Surrounding field values must be used to update a given field component. Hence, logic is required that determines which fields are necessary to update a field. In conventional implementations, this logic has been hardcoded into the hardware. Hence, every node was preprogrammed with the values it needed to fetch to update a given field component. However, this wastes logic as values are fetched in a regular pattern.

[0043] To address this problem, the present invention, in still another aspect, may use a data dependence unit that determines which field values are required to update a given field component. This data dependence unit takes the coordinates and the type of field to fetch, and outputs at regular intervals the necessary field types and coordinates.

[0044] F. System Control

[0045] The present invention may also have a system control that utilizes a counter-based finite-state machine (FSM). An FSM is a model of computation consisting of a set of states, a start state, an input alphabet, and a transition function that maps input symbols and current states to a next state. Computation begins in the start state with an input string. It changes to new states depending on the transition function. There are many variants, for instance, machines having actions (outputs) associated with transitions (Mealy machine) or states (Moore machine), multiple start states, transitions conditioned on no input symbol (a null) or more than one transition for a given symbol and state (nondeterministic finite state machine), one or more states designated as accepting states (recognizer), etc.

[0046] In this scenario, a global counter is incremented every rising edge of the clock. All units (e.g., customized floating-point arithmetic units, memory switching unit, and data dependence unit) may then probe the value of this counter. Based on a FSM internal to each unit (e.g., the customized, floating-point arithmetic units, the memory switching unit, and the data dependence unit) and the current value of the counter, each unit will “turn on” or “turn off” at the appropriate time. This is powerful since it describes the control of each unit without the usual handshaking, and allows timing modifications to be easily incorporated into the design.

[0047] It will be apparent to those skilled in the art that various modifications and variations can be made in the components and methods for facilitating implementation of a finite-difference time-domain (FDTD) hardware accelerator of the present invention and in construction of the components or methods without departing from the scope or spirit of the invention. As an example, the present invention could use a non-split field formulation; might not include source, boundary conditions, and a standard mesh in one equation; could use an absorbing boundary condition other than PML; and could implement fully compliant arithmetic units.

[0048] Other embodiments of the invention will be apparent to those skilled in the art from consideration of the specification and practice of the invention disclosed herein. It is intended that the specification and examples be considered as exemplary only, with a true scope and spirit of the invention being indicated by the following claims. 

What is claimed is:
 1. A method for implementing a finite-difference time-domain (FDTD) hardware accelerator, comprising: reformulating an FDTD algorithm by embedding a normal FDTD space, an absorbing boundary region, and an incident source condition into a single set of mathematical expressions.
 2. A method for implementing a finite-difference time-domain (FDTD) hardware accelerator as recited in claim 1, wherein the absorbing boundary region comprises perfectly matched layer (PML) absorbing boundaries.
 3. A method for implementing a finite-difference time-domain (FDTD) hardware accelerator as recited in claim 1, wherein the reformulating step comprises splitting Maxwell's equation into twelve equations.
 4. A method for implementing a finite-difference time-domain (FDTD) hardware accelerator, comprising: storing a small bit vector representing a material type of a node of a mesh; and providing a material look-up table that stores values of coefficients that can be looked up based on the material type.
 5. A method for implementing a finite-difference time-domain (FDTD) hardware accelerator as recited in claim 4, wherein the storing step comprises storing three integers representing the material types in the x, y and z directions at each node.
 6. A method for implementing a finite-difference time-domain (FDTD) hardware accelerator, comprising: providing customized, floating-point arithmetic units based on the IEEE 754 standard.
 7. A method for implementing a finite-difference time-domain (FDTD) hardware accelerator as recited in claim 6, wherein the floating-point arithmetic units are customized by rounding numbers to zero that would be denormalized in a IEEE 754 compliant floating-point arithmetic unit, and supporting only the round to zero method outlined in the IEEE 754 standard.
 8. A method for implementing a finite-difference time-domain (FDTD) hardware accelerator, comprising: providing a memory switching unit responsible for handling all memory input/output (I/O) requests.
 9. A method for implementing a finite-difference time-domain (FDTD) hardware accelerator as recited in claim 8, wherein the memory switching unit organizes which values need to be fetched from random access memories (RAMs), determines the appropriate RAM to fetch the values from, and handles all control signaling that must take place.
 10. A method for implementing a finite-difference time-domain (FDTD) hardware accelerator as recited in claim 8, wherein the memory switching unit provides transparent access to the RAMs.
 11. A method for implementing a finite-difference time-domain (FDTD) hardware accelerator, comprising: providing a data dependence unit that determines which field values are required to update a given field component.
 12. A method for implementing a finite-difference time-domain (FDTD) hardware accelerator as recited in claim 11, wherein the data dependence unit takes coordinates and the type of field to fetch, and outputs at regular intervals the necessary field types and coordinates.
 13. A method for implementing a finite-difference time-domain (FDTD) hardware accelerator, comprising: providing a system control that utilizes a counter-based finite-state machine (FSM).
 14. A method for implementing a finite-difference time-domain (FDTD) hardware accelerator as recited in claim 13, wherein the providing a system control step comprises incrementing a global counter every rising edge of a clock.
 15. A method for implementing a finite-difference time-domain (FDTD) hardware accelerator, comprising: reformulating an FDTD algorithm by embedding a normal FDTD space, an absorbing boundary region, and an incident source condition into a single set of mathematical expressions; storing a small bit vector representing a material type of a node of a mesh; providing a material look-up table that stores values of coefficients that can be looked up based on the material type; providing customized, floating-point arithmetic units based on the IEEE 754 standard; providing a memory switching unit responsible for handling all memory input/output (I/O) requests; providing a data dependence unit that determines which field values are required to update a given field component; and providing a system control that utilizes a counter-based finite-state machine (FSM).
 16. A method for implementing a finite-difference time-domain (FDTD) hardware accelerator as recited in claim 15, wherein the customized, floating-point arithmetic units, the memory switching unit, and the data dependence unit probe the value of the counter of the system control.
 17. A method for implementing a finite-difference time-domain (FDTD) hardware accelerator as recited in claim 16, wherein based on a FSM internal to the customized, floating-point arithmetic units, the memory switching unit, and the data dependence unit, and the current value of the counter, the memory switching unit, the data dependence unit, and each of the customized, floating-point arithmetic units will turn on or turn off at an appropriate time. 